首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏iSharkFly

    TypeScript 类型系统

    针对 JavaScript 上面的问题,聪明的同学就想那我们就给 JavaScript 加个类型吧,和 Java 一样,能够对变量的类型进行定义,这个想法就是 TypeScript类型系统, 在很大程度上弥补了 从 TypeScript 的名字就可以看出来,「类型」是其最核心的特性,TypeScript 也主要致力于解决 JavaScript 的类型混乱问题。 TypeScript 是静态类型 类型系统按照「类型检查的时机」来分类,可以分为下面 2 种 动态类型 静态类型 动态类型是指在运行时才会进行类型检查,这种语言的类型错误往往会导致运行时错误。 TypeScript 在运行前需要先编译为 JavaScript,而在编译阶段就会进行类型检查,所以 TypeScript 是静态类型,这段 TypeScript 代码在编译阶段就会报错了: let foo 大部分 JavaScript 代码都只需要经过少量的修改(或者完全不用修改)就变成 TypeScript 代码,这得益于 TypeScript 强大的[类型推论][],即使不去手动声明变量 foo 的类型

    1.2K00发布于 2021-11-16
  • 来自专栏脑洞前端

    TypeScript 类型系统

    系列安排: 上帝视角看 TypeScript[1](已发布) TypeScript 类型系统(就是本文) types 和 @types 是什么? 明白了 JavaScript 和 TypeScript 类型的区别和联系之后,我们就可以来进入我们本文的主题了:「类型系统」。 实际上这也正是 Typescript 的主要功能,即给 JavaScript 添加静态类型检查。要想实现静态类型检查,首先就要有类型系统。 总之,我们使用 Typescript 的主要目的仍然是要它的静态类型检查,帮助我们提供代码的扩展性和可维护性。因此 Typescript 需要维护一套完整的类型系统。 「类型系统包括 1. 总结 本文主要讲了 Typescript类型系统Typescript 和 JavaScript 的类型是很不一样的。

    1.7K10发布于 2020-08-20
  • 来自专栏Super 前端

    TypeScript系列:初篇 - 类型系统

    TypeScript 是 JavaScript 的一个超集,添加了类型系统和编译期错误检查等功能 => 静态类型检查。 类型指的是一组具有相同特征的值。 静态类型系统描述了运行程序时的值的形状和行为。 TypeScript 支持块级类型声明,即类型可以声明在代码块(用大括号表示)里面,只在当前代码块有效。 动态类型 pk 静态类型 JavaScript 动态类型语言,没有使用限制。 let test = 'ligang' test = 33 TypeScript 静态类型语言,引入了类型系统。 let test: string = 'ligang' test = 33 // 不能将类型“number”分配给类型“string” 特性 JavaScript TypeScript 类型系统 动态类型 未来兼容性 随着 ECMAScript 的更新而更新 需要更新 TypeScript 以支持新特性 TypeScript 本身不执行任何代码,只是添加了一个类型系统,用于在编译时提供类型安全和错误检查

    28010编辑于 2025-05-31
  • 来自专栏黯羽轻扬

    深入类型系统_TypeScript笔记8

    语句 二.子类型兼容性 TypeScript的13种基本类型中,类型层级关系如下: ? ,函数、类、泛型等复杂类型间也有这样的兼容关系 三.函数 兼容性判定 对类型系统而言,需要准确判断一个函数类型是否兼容另一个函数类型,例如在赋值的场景: let log: (msg: string) = ),反过来的话是安全的,因为返回值类型相同,参数绰绰有余,msg的类型也兼容(string是any的子类型) 具体的,TypeScript类型系统对函数类型的兼容性判定规则如下: 参数:要求对应参数的类型兼容 ,因此为了保持类型系统简单,有的语言也认为类型构造器不变,虽然这样可能会违反类型安全 特殊地,TypeScript里的函数类型是双变的,例如: interface Comparer<T> { compare 所以TypeScript并没有强制约束函数类型逆变,而是允许双变。

    1.2K40发布于 2019-06-12
  • 来自专栏编程时光

    《现代Typescript高级教程》类型系统

    theme: nico 现代JavaScript高级小册 深入浅出Dart 现代TypeScript高级小册 类型系统层级 TypeScript类型系统是强类型和静态类型的,这为开发者提供了强大的类型检查和类型安全保障 为了更好地理解 TypeScript类型系统,本文将全面介绍其类型系统层级,包括顶层类型(Top Type)和底层类型(Bottom Type),以及在这个层次结构中如何处理和操作各种类型。 理解 TypeScript类型系统层级有助于我们更好地使用和掌握 TypeScript,写出更健壮、可维护的代码。 1. 对比:顶层类型 vs 底层类型 顶层类型和底层类型TypeScript 类型系统的两个重要组成部分,它们各自扮演着不同的角色。 理解 TypeScript类型系统层级有助于我们编写更健壮、可维护的 TypeScript 代码。尽管 any 类型提供了很大的灵活性,但是它的滥用可能会削弱 TypeScript类型安全性。

    43730编辑于 2023-07-31
  • 来自专栏编程三昧

    系统学习 TypeScript(五)——联合类型

    [TypeScript] 前言 在初步学习了 TypeScript 的变量声明后,对它的静态类型检查功能简直是爱不释手,但同时也发现一个问题:在正常的开发中,一个变量的类型有时可能不仅仅只限于 number 到底该怎样限制 res 的类型,让它同时满足 number 和 string 的类型检查呢?这就涉及到我们今天要学的 TypeScript 的另一种类型声明——联合类型。 注意:对于指定了联合类型的变量,其值的类型必须只能是联合类型中包含的某一种,如果取了联合类型之外的类型值,在编译过程中会报错。 指定了联合类型的变量可以在运行过程中被赋予联合类型中的任一类型值。 在给 res 赋值为 12 后,TypeScript 推断 res 的类型为 number,number 类型不存在 .length 属性,所以报错。 总结 以上就是 TypeScript 联合类型的相关知识,总结起来就是: 联合类型包含了变量可能的所有类型; 对联合类型变量赋值为联合类型之外的值,会产生报错; 在不能确定联合类型变量的最终类型之前,只能访问联合类型所共有的属性和方法

    1.3K20编辑于 2022-03-01
  • 来自专栏编程三昧

    系统学习 TypeScript(三)——基础类型

    前言 TypeScript 包含的基础类型总结起来有: 布尔值 数字 字符串 数组 元组 枚举 任意值 空值 Null 和 undefined Never Object 今天,我们就来详细了解一下各个类型所代表的含义及表示方法 let isNew: boolean = true; 数字 → number TypeScript 中的整形和浮点数类型都是 number,这点和 JavaScript 是一样的,比如:十进制、二进制 字符串的值使用单引号或者双引号包裹: let myName: string = "编程三昧"; let myHomepage: string = `example.com/${myName}`; 数组 TypeScript null 和 undefined TypeScript 中也有 null 和 undefined 两种类型,它们只能各自对应 null 值和 undefined 值。 总结 以上就是 TypeScript 中的基础数据类型介绍,总结起来就是: 在变量(函数的括号)后面添加冒号,后面跟上期望的类型,即可限制类型的前后一致性; 如果没有显式的添加类型限制,TypeScript

    86410编辑于 2022-02-24
  • 来自专栏前端学习教程

    TypeScript类型声明

    当我们使用TypeScript编写代码时,类型声明是非常重要的,它帮助我们定义变量、函数、类等的类型,从而提供更好的代码提示、类型检查和代码可读性。 以下是关于TypeScript类型声明的详细内容:基本类型声明在TypeScript中,我们可以使用以下关键字来声明基本类型:let num: number = 42;let str: string = (Type Assertion)类型断言允许我们手动指定变量的类型,并告诉TypeScript编译器我们知道更多关于变量的类型信息。 : number; readonly id: number;}以上是关于TypeScript类型声明的一些重要内容。通过合理使用类型声明,我们可以增强代码的可读性、类型安全性和可维护性。 类型声明是TypeScript的核心特性之一,可以帮助我们构建更健壮的代码和应用程序。我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

    86320编辑于 2023-11-06
  • 来自专栏前端学习教程

    TypeScript类型推断

    当我们在TypeScript中声明变量但没有明确指定其类型时,TypeScript会尝试根据变量的值进行类型推断。这样可以帮助我们避免手动指定所有类型,使代码更简洁,同时也提供了更好的类型安全性。 TypeScript 推断 y 为 string 类型let z = true; // TypeScript 推断 z 为 boolean 类型在这个例子中,我们没有显式地给变量x、y和z指定类型TypeScript "]; // TypeScript 推断 names 为 string[] 类型TypeScript会检查数组中所有元素的类型,并根据元素类型推断出数组的类型。 } 类型TypeScript会根据对象字面量中的键值对进行类型推断。 TypeScript会根据传入的john对象推断参数类型

    1.1K00编辑于 2023-11-03
  • 来自专栏coldPlayer的前端专栏

    TypeScript类型守卫

    类型守卫在前几篇介绍了断言,在使用断言时我们已经确定了变量的类型,确定该类型时一定存在(否则则会欺骗编译,运行时报错),那么为什么还要类型守卫呢? 因为类型断言还是需要借助类型守卫的,类型守卫主要是用来判断未知类型是不是所需要的类型。 typeof做类型守卫呢? 这种写法称作类型谓词,使用类型谓词的函数称为类型谓词函数,该函数的返回值必须的boolean类型。 (1)函数参数形式函数中的参数类型为多个类型,通过is关键字自定义类型,将函数参数精确到某种类型,然后再执行相应的逻辑。

    1.1K30编辑于 2023-11-20
  • 来自专栏全栈修仙之路

    TypeScript never 类型

    数学理论与计算机的发展是相辅相成的,底部类型在计算机科学中也有一定的应用场景。 在子类型系统中,底部类型是所有类型的子类型。(但是,相反情况并非如此,所有类型的子类型不一定是底部类型。) 它与顶端类型(它跨越系统中的所有可能值)和单元类型(恰好具有一个值)形成对比。 底部类型通常用于以下作用: 表示函数或运算有所不同,换句话说,就是不会将结果返回给调用方。 了解完底部类型的概念后,下面我们开始来介绍 TypeScript 中对应的底部类型 —— never 类型。 二、never 类型TypeScript 中,never 类型表示的是那些永不存在的值的类型。 下面我们来介绍一下 TypeScript 中 never 类型的应用场景。

    4.7K10发布于 2020-03-05
  • 来自专栏全栈修仙之路

    TypeScript 元组类型

    阅读须知:本文示例的运行环境是 TypeScript 官网的 Playground,对应的编译器版本是 v3.8.3。 在 JavaScript 中是没有元组的,元组是 TypeScript 中特有的类型,其工作方式类似于数组。 元组可用于定义具有有限数量的未命名属性的类型。每个属性都有一个关联的类型。 针对这种情形,在 TypeScript 中就可以利用元组类型可选元素的特性来定义一个元组类型的坐标点,具体实现如下: type Point = [number, number?, number?] 六、只读的元组类型 TypeScript 3.4 还引入了对只读元组的新支持。我们可以为任何元组类型加上 readonly 关键字前缀,以使其成为只读元组。 Github - typescript-tuples

    2K20发布于 2020-03-11
  • 来自专栏HueiFeng技术专栏

    TypeScript数组类型

    [类型+方括号] 在我们创建数组的时候同样我们可以定义数组内数据的类型,如下所示 var arr:number[]=[1,2,3] var arr2:string[]=["1","2","3"] var true] 接口形式 interface IArr{ [index:number]:number } var arrType3:IArr=[1,2,3] 通过如上代码我们限制了值只能为number类型 age:number } var arrType5:Array<IArrStudent>=[{ name:"Mr.A",age:18},{ name:"Mr.B",age:20}] 同样在这类型加方括号的形式也可以描述

    1.7K30发布于 2020-04-10
  • 来自专栏Web前端开发

    TypeScript 基础类型

    一、TypeScript 的安装及使用 1、安装 npm i typescript -g // ts 全局包 npm i ts-node -g // 使用 ts-node 直接运行 ts 文件 2、使用 将 TypeScript 转换为 JavaScript 代码: tsc test.ts 使用 node 命令来执行 test.js 文件: $ node test.js 二、TypeScript 基础类型 1、任意类型 any 声明为 any 的变量可以赋予任意类型的值 let any1: any = 4 console.log(any1); // 4 any1 = false console.log 元组与数组相似,但元组每一项的数据类型可以不同(而数组需要使用 any 类型才可以实现每一项类型不同) let x: [string, number]; x = ['Faker', 1]; / ) let x: never; // 运行错误,数字类型不能转为 never 类型 x = 123;

    1.7K30发布于 2020-07-07
  • 来自专栏appuploader使用操作流程

    TypeScript 基础类型

    TypeScript 基础类型 TypeScript 包含的数据类型如下表: 数据类型 关键字 描述 任意类型 any 声明为 any 的变量可以赋予任意类型的值。 **注意:**TypeScript 和 JavaScript 没有整数类型。 ---- Any 类型 任意值是 TypeScript 针对编程时类型不明确的变量使用的一种数据类型,它常用于以下三种情况。 Null 和 Undefined 是其他任何类型(包括 void)的子类型,可以赋值给其它类型,如数字类型,此时,赋值后的类型会变成 null 或 undefined。 而在TypeScript中启用严格的空校验(--strictNullChecks)特性,就可以使得null 和 undefined 只能被赋值给 void 或本身对应的类型,示例代码如下: // 启用

    1.1K10编辑于 2023-05-12
  • 来自专栏coldPlayer的前端专栏

    TypeScript交叉类型&联合类型

    一、交叉类型(Intersection types)什么事交叉类型呢?简单来说就是通过&符号将多个类型进行合并成一个类型,然后用type来声明新生成的类型。 这里分两种情况,如果同名属性的类型相同则合并后还是原本类型,如果类型不同,则合并后类型为never2.基本数据类型交叉any和number交叉结果是any类型,any和boolean交叉结果是any类型 ,如下图所示:3.2 键的类型是对象类型A、B、C三个类型都有相同的键inner,但是键的数据类型不同,分别是D、E、F,此时A&B&C会将inner键的类型进行合并,其实是D、E、F的交叉类型。 ,当键的类型是不同的字面量类型,则交叉后类型为never类型。 二、联合类型(Union types)联合类型和交叉类型比较相似,联合类型通过|符号连接多个类型从而生成新的类型。它主要是取多个类型的交集,即多个类型共有的类型才是联合类型最终的类型

    1.8K21编辑于 2023-11-20
  • 来自专栏Web前端开发

    TypeScript 类型保护

    TypeScript 中使用联合类型经常会有下面的错误出现: ? ? 这时就需要用到类型保护,类型保护允许你使用更小范围下的对象类型,常见的类型保护如下: 一、类型断言的类型保护 ? 二、in 语法的类型保护 ? 三、typeof 类型保护 先来看另一种常见的错误: ? ? 通过 typeof 类型保护: ? 四、instanceof 类型保护 ?

    92600发布于 2020-08-05
  • 来自专栏HueiFeng技术专栏

    TypeScript函数类型

    # 声明式类型函数 通过如下代码我们实现了一个返回值为number类型的方法,同时我们也对返回值和参数进行了约束 ``` function funcType(name:string,age:number 对方法进行添加默认值 ``` function funcType2(name:string="张三",age:number=18):number{ return age; } ``` # 表达式类型函数 numbe } var funcType6:funcType5=function(name:string,age:number):number{ return age; } ``` # 联合类型重载 通过如下代码我们可以实现一个联合类型函数,当然这可以采用重载的方式 当我们的参数是number类型时我们的返回值是number类型,当我们的参数是string类型时我们的返回值是string类型,这一块具体在我们实际业务中可以根据实际需求进行相应修改

    1.2K20发布于 2020-04-09
  • 来自专栏coldPlayer的前端专栏

    TypeScript类型声明

    前言本文主要讲解TypeScript的基本数据结构,主要包括JS基本数据类型以及TS特有的数据类型。 数组中数据的类型可以不随定义的类型位置的限定。 数组中数据的位置、类型以及个数必须要和声明的类型、声明类型的位置、声明类型的个数保持一致,否则就会报错。 )声明变量类型为any时编译时会绕过所有类型的检测,直接通过编译阶段的检查可以任意访问属性的方法和属性any类型可以赋值给任意类型如果变量初始没有定义类型,默认为any;经过赋值后,TS会根据赋值类型来标识变量的类型 具有以下特点:never类型是所有类型的子类型,即never类型可以赋值给任何类型。其他任何类型均不是never类型的子类型,即其他类型均不可赋值给never类型,除了never本身。

    1.1K30编辑于 2023-11-22
  • 来自专栏前端学习教程

    TypeScript】条件类型

    条件类型(Conditional Types)是TypeScript中一种强大的类型系统特性,它允许我们根据类型关系来推断和选择类型。 X : Y这表示如果类型T可以赋值给类型U,则条件类型为X,否则为Y。 ,它检查类型T是否为number类型。 根据条件的结果,返回不同的字符串类型。分布式条件类型条件类型还可以在联合类型上使用,这称为分布式条件类型。当我们传入一个联合类型的参数时,条件类型会遍历每个成员,并根据条件进行推断。 条件类型TypeScript类型系统的一个重要部分,它允许我们在类型级别上进行条件分支和类型选择。通过巧妙地组合泛型、联合类型和条件类型,我们可以定义出非常复杂且强大的类型

    69040编辑于 2023-11-07
领券